The present invention relates generally to the field of wireless communication systems and in particular to a system, method and operator for increasing the active window size in a NAK-based window protocol.
Modern communications systems, including wireless systems, use a layered architecture, with separate protocols for performing defined functions at each layer. The layered protocol approach allows upper level logical operations to be implemented without regard to the lower level physical operations of transmission and reception, error correction and the like.
The IS-2000 CDMA wireless communications standard defines a protocol known as the Radio Link Protocol (RLP) for implementing physical layer communications between a Radio Access Network and a Mobile Station. RLP is unaware of higher layer framing; it operates on a featureless octet stream, delivering the octets in the order received. RLP has procedures to substantially reduce the error rate exhibited by CDMA traffic channels. There is no direct relationship between higher layer packets and the RLP data frames; a large packet may span multiple data frames, or a single RLP data frame may contain all or part of several small higher layer packets.
RLP is a NAK-based window protocol. That is, the receiver does not acknowledge each received data frame. Rather, the receiver receives and processes data frame in order (according to sequence numbers associated with each data frame), sending a Negative AcKnowledgement (NAK) when a data frame is “missed”—either not received or received with unrecoverable errors. The receiver may send a NAK with the sequence number of the missed data frame when one or more data frames are received that are not in contiguous, sequential order to previously received data frames. The NAK is a request to re-transmit the missing data frame. However, the NAK need not be sent immediately. The receiver may continue to receive data frames ahead of the missed frame, hoping to receive the missed frame in an un-requested retransmission. The receiver may also optionally occasionally transmit a “fill” frame, indicating all data frames up to a particular sequence number have been correctly received.
To comply with the NAK protocol, the transmitter must retain a copy of each transmitted data frame in a retransmission queue, against the possibility of receiving a NAK request. Once a NAK is received, the transmitter knows that the receiver has correctly received all data frames previous to the data frame identified in the NAK request. Thus, upon receiving a NAK or fill frame can the transmitter discard copies of previously transmitted data frames, freeing space in its retransmission queue. In some implementations, the transmitter may discard copies of previously transmitted data frames based on a timer waiting a NAK, the rate of buffer built up at the transmitter, or the like. For any fixed size retransmission queue wherein retransmission data frames are retained until a NAK or fill frame, if the receiver properly receives all transmitted data frames, or does not promptly NAK a missing frame, and does not transmit a fill frame, the transmitter may completely fill the retransmission queue with copies of transmitted data frames. Once this occurs the transmitter must stall, and cannot accept new data frames for transmission to the receiver.
The RLP data frame sequence space comprises a 12-bit value, for 4096 sequence numbers. Each data frame is identified by a sequence number, and transmission and reception of data frames is tracked by pointers to queues maintained in the RLP transmitter and receiver. The queues are conceptually configured as circular buffers, and the pointers “wrap around” to continuously utilize the full available queue capacity. Due to the way the queue pointer comparison operators are defined in the RLP, both the transmitter's retransmission queue, and the receiver's active window (into which newly received, non-sequential data frames are stored) are limited to half of the 4096-element sequence space, or 2048 data frames each.
Under high data rates, such as those achievable on packet data channels such as F-PDCH, and good channel conditions generating infrequent NAKs, the receiver's retransmission queue can fill, causing a transmitter queue stall. This typically occurs when a transmission error occurs for a sequence number blocking a pointer in the receiver queue from advancing. In addition, a rigid definition of retransmission queue and active window size may not be optimal for all applications. Applications may benefit from the ability to negotiate the queue and window sizes between RLP peers upon establishing the connection.